﻿using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ABC_SA_WEB.WebServicePaquete;

namespace ABC_SA_WEB
{
    public partial class RelPaqueteServicio : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                //Llamado a la capa WS
                wsPaquete Paquete_WS = new wsPaquete();

                // Consulta la lista de paquetes
                lbServ1.DataSource = Paquete_WS.ListaServicios();
                lbServ1.DataBind();

                lblnombrePaquete.Text = Request.QueryString["nombre"];
                lblidPaquete.Text = Paquete_WS.consultaIdConNombre(Request.QueryString["nombre"]);
            }
        }

        protected void Mover_Click(object sender, EventArgs e)
        {
            lbServ2.Items.Add(lbServ1.SelectedItem);
            lbServ1.Items.Remove(lbServ1.SelectedItem);
            lbServ2.SelectedIndex = -1;
        }

        protected void Listo_Click(object sender, EventArgs e)
        {
            //Captura y convierte a INT el valor del ID
            int idPaquete = Convert.ToInt32(lblidPaquete.Text);

            List<string> listaServicios = new List<string>();
            for (int i = 0; i < lbServ2.Items.Count; i++)
            {
                listaServicios.Add(lbServ2.Items[i].Text);
            }

            //Llamado a la capa WS
            wsPaquete Paquete_WS = new wsPaquete();
            if (!Paquete_WS.relacionPaqueteServicio(idPaquete, listaServicios.ToArray()))
            {
                mostrarMensaje("Se le han agregado los servicios al paquete correctamente");
            }
            else
            {
                mostrarMensaje("Error: No se pudieron agregar los servicios al Paquete");
            }
        }

        protected void ddServicios_SelectedIndexChanged(object sender, EventArgs e)
        {
            // Consulta la lista de Servicios para mostrarlos filtrados en lbServ1
            lbServ1.Items.Clear();

            //Llamado a la capa WS
            wsPaquete Paquete_WS = new wsPaquete();
            Array listServicio = Paquete_WS.ListaServicios();
            listServicio.GetValue(1);

            // Define cuales destinos deben mostrarse segun la opcion elegida en el dropdown
            for (int i = 0; i < listServicio.Length; i++)
            {
                int Switch = ddServicios.SelectedIndex;
                switch (Switch)
                {
                    case 0:
                        lbServ1.Items.Add(((Servicio)listServicio.GetValue(i)).Nombre);
                        break;
                    case 1:
                        if (((Servicio)listServicio.GetValue(i)).Categoria == 0)
                        {
                            lbServ1.Items.Add(((Servicio)listServicio.GetValue(i)).Nombre);
                        }
                        break;
                    case 2:
                        if (((Servicio)listServicio.GetValue(i)).Categoria == 1)
                        {
                            lbServ1.Items.Add(((Servicio)listServicio.GetValue(i)).Nombre);
                        }
                        break;
                    case 3:
                        if (((Servicio)listServicio.GetValue(i)).Categoria == 2)
                        {
                            lbServ1.Items.Add(((Servicio)listServicio.GetValue(i)).Nombre);
                        }
                        break;
                    case 4:
                        if (((Servicio)listServicio.GetValue(i)).Categoria == 3)
                        {
                            lbServ1.Items.Add(((Servicio)listServicio.GetValue(i)).Nombre);
                        }
                        break;
                    case 5:
                        if (((Servicio)listServicio.GetValue(i)).Categoria == 4)
                        {
                            lbServ1.Items.Add(((Servicio)listServicio.GetValue(i)).Nombre);
                        }
                        break;
                    default:
                        Debug.WriteLine("Sin Categoria");
                        break;
                }
            }
        }

        private void mostrarMensaje(string mensaje)
        {
            string csname1 = "PopupScript";
            Type cstype = this.GetType();
            string cstext1 = Utilitario.mensajeJS(mensaje);
            ClientScript.RegisterStartupScript(cstype, csname1, cstext1);
        }

        protected void btnVolver_Click(object sender, EventArgs e)
        {
            Response.Redirect("SeleccionPaquete.aspx");
        }
    }
}